#ifndef RENDERER_H
#define RENDERER_H

#include <QWidget>
#include "mapdata.h"  // 包含地图数据结构
#include <QResizeEvent>  // 新增：用于窗口大小事件

class Renderer : public QWidget {
    Q_OBJECT
public:
    explicit Renderer(QWidget *parent = nullptr);
    void setMapData(const MapData &mapData);  // 设置地图数据
    QSize sizeHint() const override;  // 窗口推荐大小
    void setCellSize(int size);

protected:
    // 重写窗口大小变化事件（新增声明）
    void resizeEvent(QResizeEvent *event) override;
    // 重写绘制事件
    void paintEvent(QPaintEvent *event) override;

private:
    MapData m_mapData;  // 地图数据
    int m_cellSize;  // 单元格大小（新增成员变量）

    // 从网格中查找玩家当前位置
    QPoint findPlayerCurrentPos() const;
    // 绘制单个单元格
    void drawCell(QPainter &painter, int row, int col, MapElement element);
    // 计算单元格大小（新增函数声明）
    void updateCellSize();
};

#endif // RENDERER_H
